<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>ext_skel 脚本</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="internals2.buildsys.environment.html">PHP 扩展开发构建</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="internals2.buildsys.configunix.html">与 UNIX 构建系统交互: config.m4</a></div>
 <div class="up"><a href="internals2.buildsys.html">PHP 5 构建系统</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="internals2.buildsys.skeleton" class="sect1">
  <h2 class="title">ext_skel 脚本</h2>
  <p class="para">
   PHP 扩展由几个文件组成，这些文件对所有扩展来说都是通用的。不同扩展之间，这些文件的很多细节是相似的，只是要费力去复制每个文件的内容。幸运的是，有脚本可以做所有的初始化工作，名为
   <strong class="command">ext_skel</strong>，自 PHP 4.0 起与其一起分发。
  </p>
  
  <p class="para">
   不带参数运行 <strong class="command">ext_skel</strong> 在 PHP 5.2.2 中会产生以下输出：
   <div class="example-contents screen">
<div class="cdata"><pre>
php-5.2.2/ext$ ./ext_skel 
./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]]
           [--skel=dir] [--full-xml] [--no-help]

  --extname=module   module is the name of your extension
  --proto=file       file contains prototypes of functions to create
  --stubs=file       generate only function stubs in file
  --xml              generate xml documentation to be added to phpdoc-cvs
  --skel=dir         path to the skeleton directory
  --full-xml         generate xml documentation for a self-contained extension
                     (not yet implemented)
  --no-help          don&#039;t try to be nice and create comments in the code
                     and helper functions to test if the module compiled
</pre></div></div>
   通常来说，开发一个新扩展时，仅需关注的参数是 <em>--extname</em>
   和 <em>--no-help</em>。除非已经熟悉扩展的结构，<em class="emphasis">不</em>要想去使用
   <em>--no-help</em>; 指定此参数会造成 <strong class="command">ext_skel</strong>
   不会在生成的文件里省略很多有用的注释。
  </p>
  
  <p class="para">
   剩下的 <em>--extname</em> 会将扩展的名称传给
   <strong class="command">ext_skel</strong>。&quot;name&quot; 是一个全为小写字母的标识符，仅包含字母和下划线，在 PHP 发行包的
   <var class="filename">ext/</var> 文件夹下是唯一的。
  </p>
  
  <p class="para">
   <em>--proto</em> 选项允许开发人员指定一个头文件，由此创建一系列 PHP
   函数，表面上看就是要开发基于一个函数库的扩展，但对大多数头现代的文件来说很少能起作用。如果用
   <var class="filename">zlib.h</var> 头文件来做测试，就会导致在 <strong class="command">ext_skel</strong>
   的输出文件中存在大量的空的和无意义的原型文件。<em>--xml</em> 和
   <em>--full-xml</em> 选项当前完全不起作用。<em>--skel</em>
   选项可用于指定用一套修改过的框架文件来工作，这是本节范围之外的话题了。
  </p>
 </div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="internals2.buildsys.environment.html">PHP 扩展开发构建</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="internals2.buildsys.configunix.html">与 UNIX 构建系统交互: config.m4</a></div>
 <div class="up"><a href="internals2.buildsys.html">PHP 5 构建系统</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
